//package com.yz.design.domain;
//
//import com.xfj.base.receipt.mapper.BankReceiptMapper;
//import lombok.SneakyThrows;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @ClassName ReceivedNo
// * @Description 回款单编号实体
// * @Author 广长
// * @Date 2020/7/13
// * @Version V1.0
// **/
//public class ReceivedNo extends AbstractNumberingNo {
//
//
//    private BankReceiptMapper bankReceiptMapper;
//
//    /**
//     * @param prefix             自定义前缀开头
//     * @param suffixLen          后缀默认长度
//     * @param bankReceiptMapper  回款自定义sql
//     */
//    public ReceivedNo(String prefix, Integer suffixLen, BankReceiptMapper bankReceiptMapper) {
//        this.bankReceiptMapper = bankReceiptMapper;
//        this.setPrefix(prefix == null ? "R" : prefix);
//        this.setSuffixLen(suffixLen);
//    }
//    /**
//     * @param suffixLen          后缀默认长度
//     * @param bankReceiptMapper 回款自定义sql
//     */
//    public ReceivedNo(Integer suffixLen, BankReceiptMapper bankReceiptMapper) {
//        this.bankReceiptMapper = bankReceiptMapper;
//        this.setPrefix("R");
//        this.setSuffixLen(suffixLen);
//    }
//
//    @Override
//    @SneakyThrows
//    public String getNumberingNo() {
//        String prefix = this.getNumberingNoPrefixByYear(this.getPrefix());
//        Integer suffixLen = this.getSuffixLen();
//        String maxNumberingNo = this.bankReceiptMapper.selectMaxReceivedNo();
//        this.setMaxNumberingNo(maxNumberingNo == null ? "" : maxNumberingNo);
//        maxNumberingNo = this.getMaxNumberingNo();
//        if (maxNumberingNo == null || "".equals(maxNumberingNo)) {
//            return prefix + String.format("%0" + suffixLen + "d", 1);
//        }
//        if (!maxNumberingNo.startsWith(prefix)) {
//            throw new Exception("回款单前缀与生成的前缀不一致");
//        }
//
//        String suffix = String.format("%0" + suffixLen + "d", Integer.parseInt(maxNumberingNo.substring(prefix.length())) + 1);
//        return prefix + suffix;
//
//    }
//
//    @Override
//    public String getInfoNumberingNo(Integer id) {
//        Map<String, Object> params = new HashMap<>(4);
//        params.put("receiptId", id);
//        String prefix =  this.bankReceiptMapper.getBankReceiptById(params).getBankSerialNumber();
//        Integer suffixLen = this.getSuffixLen();
//
//        // 最大明细编号
//        String maxInfoNumberingNo = this.bankReceiptMapper.selectMaxReceivedInfoNoByReceivedId(id);
//        this.setMaxNumberingNo(maxInfoNumberingNo == null ? "" : maxInfoNumberingNo);
//
//        maxInfoNumberingNo = this.getMaxNumberingNo();
//        if (maxInfoNumberingNo == null || "".equals(maxInfoNumberingNo)) {
//            return prefix + String.format("%0" + suffixLen + "d", 1);
//        }
//        String suffix = String.format("%0" + suffixLen + "d", Integer.parseInt(maxInfoNumberingNo.substring(prefix.length())) + 1);
//        return prefix + suffix;
//
//    }
//
//}
